iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

建立 flow

  • 可利用 flow builder, 如下 emit 一連串的整數
fun exampleFlow(): Flow<Int> = flow {
    for (i in 1..100) {
        delay(1000) // Simulate long-running task
        emit(i) // Emit next value
    }
}
  • 利用 collect function 接收這些 emit 的 value
fun main() = runBlocking {
    exampleFlow().collect { value ->
        println("Received value: $value")
    }
}

collect 函數是一個 suspend function, 用來從 stream 中收集已發出的 values. 允許在每個值釋出時對其執行動作. 可在此處理從 flow 接收到的資料,例如更新 UI 或進一步處理資料.

  • Flow Operators
  • Kotlin Flow 提供多個 operator 來操作 stream, 包括:
    • map: transforms 每一個 emitted 的 value.
    • filter: 基於給定的 condition 過濾 emitted 的values.
    • zip: 結合多個 flow 成單一的 flow.
    • onStart, onCompletion: 讓你在 start 開始或完成時執行動作.
exampleFlow()
    .map { it * 2 } // Double each value
    .collect { println(it) }

error handling

  • 使用 catch operator 處裡在 flow 執行時發生的異常.
exampleFlow()
    .catch { e -> println("Error: $e") }
    .collect { println(it) }

上一篇
#001 kotlin flow
下一篇
#003 kotlin flow more examples
系列文
Notes from an android developer5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言